package com.glela.order.service;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

import org.springframework.http.ResponseEntity;

import com.glela.api.pay.wechat.component.WeChat;
import com.glela.order.model.OrderPay;

public interface OrderPayService {

	public ResponseEntity<?> goToSettleAccounts(Long userNo, String orderSn, int payType, String openId, String ipAddress);

	public int modifyPaymentSuccess(String paySn,String currTime);

	public OrderPay selectByPaySn(String paySn);

	public int selectPaySuccessCountByOrderSn(String orderSn);

	public List<OrderPay> selectSuccess(String orderSn);

	public OrderPay selectByExternalId(String externalId);

	public List<OrderPay> selectAllByOrderSn(String orderSn);

	public String queryYeePayOrderStatus(String requestid);
	
	public String queryAliPayOrderStatus(String requestid);
	
	public String queryWechatPayOrderStatus(String requestid);

	/**
	 * <dl><dt>创建支付宝直连支付</dt></dl>
	 * @param orderObjectOrderSn 结算单号
	 * @param ipAddress 客户端IP
	 * @param totalFee 支付金额（分）
	 * @returnMap<String,String>
	 * @throws UnsupportedEncodingException 
	 * @author zls
	 * @date 2017年12月5日 下午11:10:41
	 */
	Map<String, String> saveAlipay(String orderObjectOrderSn, String ipAddress, int totalFee) throws UnsupportedEncodingException;

	/**
	 * <dl><dt>创建微信直连支付</dt></dl>
	 * @param orderObjectOrderSn 结算单号
	 * @param payType 支付类型
	 * @param totalFee 支付金额（分）
	 * @param ipAddress 客户端IP
	 * @param openId 微信公众号id
	 * @param weChat 微信服务类
	 * @return Map<String,Object>
	 * @throws IOException
	 * @author zls
	 * @date 2017年12月5日 下午11:09:29
	 */
	Map<String, Object> saveWxPay(String orderObjectOrderSn, int payType, int totalFee, String ipAddress, String openId, WeChat weChat) throws IOException;

	/**
	 * <dl>
	 * <dt>更新支付流水状态为成功，同时更新第三方支付流水号</dt>
	 * </dl>
	 * @param id 支付流水ID
	 * @param payId 第三方支付流水号
	 * @param payTime 支付时间
	 * @return boolean
	 * @author zls
	 * @date 2017年12月5日 下午11:08:31
	 */
	boolean modifOk(int id, String payId, String payTime);
}
